package array;

/*
 *  给定一个由整数组成的非空数组所表示的非负整数，在该数的基础上加一。
 *  最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。
 *  你可以假设除了整数 0 之外，这个整数不会以零开头。
 *
 * 示例 1:
 *     输入: [1,2,3]
 *     输出: [1,2,4]
 *     解释: 输入数组表示数字 123。
 *
 * 示例 2:
 *     输入: [4,3,2,1]
 *     输出: [4,3,2,2]
 *     解释: 输入数组表示数字 4321。
 */
public class PlusOne {

    /*
     * 解题思路：
     *         加一主要考虑的加一之后会不会进位的情况。进位的情况只有一种，那就是当前位加一之前等于9；
     *         当所有值都为9时，要进行增位
     */
    public int[] plusOne(int[] digits) {
        boolean addPosition = false; //增位标识
        for(int i=digits.length-1;i>=0;i--){
            if(digits[i]==9){
                digits[i]=0;
                if(i==0){
                    addPosition = true;
                }
            }else {
                digits[i]+=1;
                break;
            }
        }
        if(addPosition){
            int[] result = new int[digits.length+1];
            result[0] = 1;
            return  result;
        }

        return digits;
    }

}
